package com.yuanzhi.train;

import java.util.Arrays;

/**
 * 给你一个数组 nums 。数组「动态和」的计算公式为：runningSum[i] = sum(nums[0]…nums[i]) 。
 * 请返回 nums 的动态和。
 *
 * 示例 1：
 *
 * 输入：nums = [1,2,3,4]
 * 输出：[1,3,6,10]
 * 解释：动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。
 * 示例 2：
 *
 * 输入：nums = [1,1,1,1,1]
 * 输出：[1,2,3,4,5]
 * 解释：动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。
 * 示例 3：
 *
 * 输入：nums = [3,1,2,10,1]
 * 输出：[3,4,6,16,17]
 *  
 * 提示：
 *
 * 1 <= nums.length <= 1000
 * -10^6 <= nums[i] <= 10^6
 *
 * @author zhangyuanzhi
 * @since 2021/4/1 11:37
 */
public class RunningSum {
    public static int[] runningSum(int[] nums) {
//        int[] sum = new int[nums.length];
//        for (int i = 0; i < nums.length; i++) {
//            for (int j = 0; j <= i; j++) {
//                sum[i] += nums[j];
//            }
//        }
//        return sum;


        // 直接将前一个的值改为前面所有元素的和
        for(int i = 1; i<nums.length; i++){
            nums[i] =  nums[i] + nums [i-1];
        }
        return nums;
    }

    public static void main(String[] args) {
        int[] nums = {1,2,3,4};
        int[] nums1 = {3,1,2,10,1};
        System.out.println(Arrays.toString(runningSum(nums)));
        System.out.println(Arrays.toString(runningSum(nums1)));

        System.out.println((10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1));
    }
}
